#include <bits/stdc++.h>
using namespace std;

struct node {
    node() {
        cout << " default constructor " <<endl;
    }
    node(int a){
        cout << " int constructor " <<endl;
    }
    node(const node &){
        cout << "copy constructor !" <<endl;
    }

    node & operator=(const node &){
        cout << "assignment constructor" << endl;
        return *this;
    }
};

node func(){
    node t(1);
    return t;
}

int main(){
    //node x(1);

    func(); // int constructor
    node y(func()); // just int constructor

    node z = func();// just int constructor
    node z1 = z; // copy constructor


    return 0;
}
